// 实现字符串数字之间的乘法

// 引入加法
const add = require("./add");

// 补零
function patchzero(str, nums) {
    const zeroArr = new Array(nums).fill(0).join("");
    return str + zeroArr;
}
function multiply(a, b) {
    // 首先将a和b以小数点为分隔点分开
    const arr1 = String(a).split(".");
    const arr2 = String(b).split(".");

    // 得出小数点后的位数
    const zero = (arr1[1]?.length ?? 0) + (arr2[1]?.length ?? 0);

    // 得到整数部分
    const str1 = arr1.join("");
    const str2 = arr2.join("");

    // 定义结果
    let result = "0";
    // 得到整数部分乘积
    for (let i = 1; i <= str2.length; i++) {
        const temp = str2.substr(-i, 1);
        let ans = "0";
        for (let j = 1; j <= str1.length; j++) {
            // 得到乘数
            let num = str1.substr(-j, 1) * temp;
            // 将num补零
            num = patchzero(num, j - 1);
            // 更新ans
            ans = add(ans, num);
        }
        // 再让ans补零
        ans = patchzero(ans, i - 1);
        // 更新result
        result = add(result, ans);
    }

    // 最后记得加上小数点
    if (zero > 0) {
        const length = result.length;
        result =
            result.substr(0, length - zero) +
            "." +
            result.substr(length - zero);
    }
    return result;
}

module.exports = multiply;
console.log(multiply(3, 0.0001));
